/** 
 * https://leetcode.cn/problems/fruit-into-baskets/description/
 * 904. 水果成篮
 * medium, 王顶成 2024.9.5
 * c++  哈希表+滑动窗口
 */

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    int totalFruit(vector<int>& fruits) {
        unordered_map <int,int> f;
        int ans=0;
        int j=0;
        for(int i=0;i<fruits.size();i++){
            int x=fruits[i];
            ++f[x];
            while(f.size()>2){
                int y=fruits[j++];
                if(--f[y]==0) f.erase(y);
            }
            ans=max(ans,i-j+1);
        }
        return ans;
    }
};